package com.sky.mapper;

import com.sky.annotation.AutoFill;
import com.sky.dto.EmployeePageQueryDTO;
import com.sky.entity.Employee;
import com.sky.enumeration.OperationType;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface EmployeeMapper {
    int deleteByPrimaryKey(Long id);

    @AutoFill(OperationType.INSERT)
    int insert(Employee record);

    @AutoFill(OperationType.INSERT)
    int insertSelective(Employee record);

    Employee selectByPrimaryKey(Long id);

    @AutoFill(OperationType.UPDATE)
    int updateByPrimaryKeySelective(Employee record);

    @AutoFill(OperationType.UPDATE)
    int updateByPrimaryKey(Employee record);

    /**
     * 根据用户名查询员工。
     * @param username 要查询的员工用户名
     * @return 匹配该用户名的员工对象，如果未找到则返回 null
     */
    Employee getByUsername(String username);

    /**
     * 根据员工分页查询条件查询员工列表。
     * @param employeePageQueryDTO 包含员工查询的分页条件的数据传输对象
     * @return 符合查询条件的员工列表，如果没有匹配的结果，则返回空列表（不会返回null）
     */
    List<Employee> selectByPageQuery(EmployeePageQueryDTO employeePageQueryDTO);

}